package com.decent.ejfadmin.tools;

import org.apache.commons.lang3.StringUtils;

import com.decent.ejfadmin.common.bean.SupplyCard;
import com.decent.ejfadmin.common.enums.Operator;
import com.decent.ejfadmin.common.enums.SupRedisKey;
import com.decent.ejfadmin.common.exception.ErrorCodeException;
import com.decent.ejfadmin.utils.PlatConfigUtil;

/**
 * describe:卡密供货工具类
 *
 * @author 王元鑫
 * @date 2019/09/07
 */
public final class SupplyCardTools {

	/**
	 * 通过卡号获取运营商
	 *
	 * @param cardNumber 卡号
	 * @param cardPwd    卡密
	 * @return 运营商
	 */
	public static Operator getProductType(String cardNumber, String cardPwd) {
		int numberLength = StringUtils.length(cardNumber);
		int pwdLength = StringUtils.length(cardPwd);
		if (!StringUtils.isNumeric(cardPwd)) {
			// 卡号卡密规则有误
			throw new ErrorCodeException(21017);
		}
		// 移动：卡号：17位，卡密18位
		if (numberLength == 17 && pwdLength == 18) {
			return Operator.MOBILE;
		}
		// 联通：卡号：15位，卡密19位
		if (numberLength == 15 && pwdLength == 19) {
			return Operator.UNICOM;
		}
		// 电信、远特：卡号：19位，卡密18位
		if (numberLength == 19 && pwdLength == 18) {
			// 0000000000开头：远特//其他：电信
			return StringUtils.startsWith(cardNumber, "0000000000") ? Operator.YUANTE : Operator.TELECOM;
		}
		// 迪信通：卡号：15位，卡密18位
		if (numberLength == 15 && pwdLength == 18) {
			return Operator.DIXINTONG;
		}
		// 蜗牛：卡号16位，卡密10位
		if (numberLength == 16 && pwdLength == 10) {
			return Operator.WONIU;
		}
		// 中石化：卡号16位，卡密20位
		if (numberLength == 16 && pwdLength == 20) {
			return Operator.SINOPEC;
		}
		// 中石油：卡号17位，卡密19位
		if (numberLength == 17 && pwdLength == 19) {
			return Operator.CNPC;
		}
		// 卡号卡密规则有误
		throw new ErrorCodeException(18004);
	}

	/**
	 * 获取销卡配置
	 *
	 * @param productType 运营商
	 * @param configKey   配置文件key
	 * @return 配置文件value
	 */
	public static String getSupplyConfig(Integer productType, String configKey) {
		// 虚商提交到易缴费，加油卡提交到。。恩，加油卡
		configKey = (productType >= 300 ? "fuel_" : (productType > 3 ? "ejf_" : "")) + configKey;
		return PlatConfigUtil.getProperty("card_supply_info.properties", configKey);
	}


}
